package com.anhry.app.safety.util;

/** 
 * 2010-4-8 
 * remark: 
 * author:001 
 */

public final class BytesHelper {
	private BytesHelper() {
	}
	
	/**
	 * 将byte[]数组转换成int数据
	 * @param bytes 待转换的byte数组
	 * @return 转换后的INT数据
	 */
	public static int toInt(byte[] bytes) {
		int result = 0;
		for (int i = 0; i < 4; i++) {
			result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
		}
		return result;
	}

    /**
     * 将byte[]数据转换成short数据
     * @param bytes 待转换的BYTE数组
     * @return 转换后的short数据
     */
	public static short toShort(byte[] bytes) {
		return (short) (((-(short) Byte.MIN_VALUE + (short) bytes[0]) << 8)
				- (short) Byte.MIN_VALUE + (short) bytes[1]);
	}

	/**
	 * 将int数据转换成byte[]数组
	 * @param value 待转换的int数据
	 * @return 转换成的byte数组
	 */
	public static byte[] toBytes(int value) {
		byte[] result = new byte[4];
		for (int i = 3; i >= 0; i--) {
			result[i] = (byte) ((0xFFl & value) + Byte.MIN_VALUE);
			value >>>= 8;
		}
		return result;
	}

	/**
	 * 将short数据转换成byte数组
	 * @param value 待转换的short数据
	 * @return 返回byte数组
	 */
	public static byte[] toBytes(short value) {
		byte[] result = new byte[2];
		for (int i = 1; i >= 0; i--) {
			result[i] = (byte) ((0xFFl & value) + Byte.MIN_VALUE);
			value >>>= 8;
		}
		return result;
	}

	public static void main(String[] args) {
		System.out
				.println(0 + "==" + BytesHelper.toInt(BytesHelper.toBytes(0)));
		System.out
				.println(1 + "==" + BytesHelper.toInt(BytesHelper.toBytes(1)));
		System.out.println(-1 + "=="
				+ BytesHelper.toInt(BytesHelper.toBytes(-1)));
		System.out.println(Integer.MIN_VALUE + "=="
				+ BytesHelper.toInt(BytesHelper.toBytes(Integer.MIN_VALUE)));
		System.out.println(Integer.MAX_VALUE + "=="
				+ BytesHelper.toInt(BytesHelper.toBytes(Integer.MAX_VALUE)));
		System.out
				.println(Integer.MIN_VALUE
						/ 2
						+ "=="
						+ BytesHelper.toInt(BytesHelper
								.toBytes(Integer.MIN_VALUE / 2)));
		System.out
				.println(Integer.MAX_VALUE
						/ 2
						+ "=="
						+ BytesHelper.toInt(BytesHelper
								.toBytes(Integer.MAX_VALUE / 2)));
	}
}

